package com.sms.platform.service;

import java.util.Map;
import java.util.Set;

/**
 * @author xjh
 * @date 2020-08-10
 */
public interface CacheService {

    /**
     * 含有过期时间的缓存放入
     * @param expireTime key过期时间
     * @return 设置成功 true
     */
    Boolean set(String key, Object value, int expireTime);

    /**
     * 不含过期时间的缓存放入
     * @return 设置成功 true
     */
    Boolean set(String key, Object value);

    /**
     * 获取缓存值
     */
    Object get(String key);

    /**
     * 批量删除缓存
     * @param keys 缓存key数组
     */
    void delBatch(String... keys);

    /**
     * 获取hash数据缓存的单个值
     * @param key hash数据key
     * @param filed 本身字段属性
     * @return 缓存值
     */
    Object hget(String key, String filed);

    /**
     * 根据key获取所有键值对
     * @return 对应的多个键值
     */
    Map<Object, Object> hmget(String key);

    /**
     * 以hash结构插入键值对缓存值
     * @param key hash结构的键
     * @param map 对应的缓存值
     * @return 插入成功 true
     */
    Boolean hmset(String key, Map<String, Object> map);

    boolean expire(String key, long seconds);

    long getExpire(String key);

    long incr(String key, long delta);

    long decr(String key, long delta);

    Set<Object> keys(String pattern);
}
